package com.fat.spzx.common.exception;

import com.fat.spzx.model.vo.common.Result;
import com.fat.spzx.model.vo.common.ResultCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


/**
 * 全局异常处理类
 * @author :  fat
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /**
     * 默认异常处理，用于兜底
     */
    @ExceptionHandler(value = Exception.class)
    public Result DefaultExceptionHandler(Exception e) {
        log.info("默认异常处理执行。。。。可能是redis没有启动");
        e.printStackTrace();
        return Result.build(null, ResultCodeEnum.SYSTEM_ERROR.getCode(),ResultCodeEnum.SYSTEM_ERROR.getMessage());
    }

    /**
     * 自定义默认异常
     */
    @ExceptionHandler(value = GlobalException.class)
    public Result GlobalException(AddSysUserException e) {
        log.info("默认异常执行。。。。");
        e.printStackTrace();
        return Result.build(null, e.getCode(),e.getMsg());
    }

    /**
     * 自定义登录异常处理
     */
    @ExceptionHandler(value = LoginException.class)
    public Result LoginExceptionHandler(LoginException e) {
        log.info("登录异常处理执行。。。。");
        return Result.build(null, e.getCode(),e.getMsg());
    }

    /**
     * 自定义添加角色异常处理
     */
    @ExceptionHandler(value = AddSysRoleException.class)
    public Result AddSysRoleExceptionHandler(AddSysRoleException e) {
        log.info("添加角色异常处理执行。。。。");
        return Result.build(null, e.getCode(),e.getMsg());
    }

    /**
     * 自定义添加用户异常处理
     */
    @ExceptionHandler(value = AddSysUserException.class)
    public Result AddSysUserExceptionHandler(AddSysUserException e) {
        log.info("添加用户异常处理执行。。。。");
        return Result.build(null, e.getCode(),e.getMsg());
    }




}
